home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 January: Mac OS SDK / Dev.CD Jan 99 SDK1.toast / Development Kits / Interfaces&Libraries / Universal / Interfaces / CIncludes / PCCardEnablerPlugin.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-08-17  |  18.0 KB  |  537 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        PCCardEnablerPlugin.h
  3.  
  4.      Contains:    ???
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Release:    Universal Interfaces 3.2
  8.  
  9.      Copyright:    © 1997-1998 by Apple Computer, Inc. and SystemSoft Corporation.  All rights reserved.
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17. #ifndef __PCCARDENABLERPLUGIN__
  18. #define __PCCARDENABLERPLUGIN__
  19.  
  20. #ifndef __MACTYPES__
  21. #include <MacTypes.h>
  22. #endif
  23. #ifndef __NAMEREGISTRY__
  24. #include <NameRegistry.h>
  25. #endif
  26. #ifndef __INTERRUPTS__
  27. #include <Interrupts.h>
  28. #endif
  29. #ifndef __PCCARD__
  30. #include <PCCard.h>
  31. #endif
  32.  
  33.  
  34.  
  35. #if PRAGMA_ONCE
  36. #pragma once
  37. #endif
  38.  
  39. #ifdef __cplusplus
  40. extern "C" {
  41. #endif
  42.  
  43. #if PRAGMA_IMPORT
  44. #pragma import on
  45. #endif
  46.  
  47. #if PRAGMA_STRUCT_ALIGN
  48.     #pragma options align=power
  49. #elif PRAGMA_STRUCT_PACKPUSH
  50.     #pragma pack(push, 2)
  51. #elif PRAGMA_STRUCT_PACK
  52.     #pragma pack(2)
  53. #endif
  54.  
  55. #ifndef __CARDSERVICES__
  56. /*
  57.     NOTE: These prototypes conflict with CardServices.≈
  58.           You cannot use both PCCardEnablerPlugin.h and CardServices.h
  59.           
  60. */
  61.  
  62. /*    Copyright:    © 1996 SystemSoft Corporation, all rights reserved. */
  63. /*------------------------------------------------------------------------------------
  64.     Card Services calls exported by the Family
  65. ------------------------------------------------------------------------------------*/
  66. /*    Card Services for Card Enablers*/
  67.  
  68. EXTERN_API_C( OSStatus )
  69. CSGetCardServicesInfo            (UInt32 *                socketCount,
  70.                                  UInt32 *                complianceLevel,
  71.                                  UInt32 *                version);
  72.  
  73.  
  74. /* Function prototypes for tuples calls */
  75.  
  76. EXTERN_API_C( OSStatus )
  77. CSGetFirstTuple                    (PCCardSocket             socket,
  78.                                  UInt32                 device,
  79.                                  PCCardTupleIterator     tupleIterator,
  80.                                  Byte                     desiredTuple,
  81.                                  void *                    tupleData,
  82.                                  ByteCount *            tupleBufferSize,
  83.                                  Byte *                    foundTuple);
  84.  
  85. EXTERN_API_C( OSStatus )
  86. CSGetNextTuple                    (PCCardTupleIterator     tupleIterator,
  87.                                  Byte                     desiredTuple,
  88.                                  void *                    tupleData,
  89.                                  ByteCount *            tupleBufferSize,
  90.                                  Byte *                    foundTuple);
  91.  
  92.  
  93. /* Function prototypes for window calls*/
  94.  
  95. EXTERN_API_C( OSStatus )
  96. CSRequestWindow                    (PCCardSocket             vSocket,
  97.                                  UInt32                 device,
  98.                                  PCCardWindowAttributes  windowAttributes,
  99.                                  PCCardAccessSpeed         windowSpeed,
  100.                                  LogicalAddress *        windowBase,
  101.                                  PCCardWindowSize *        windowSize,
  102.                                  PCCardWindowOffset *    windowOffset,
  103.                                  PCCardWindowID *        requestedWindow);
  104.  
  105. EXTERN_API_C( OSStatus )
  106. CSReleaseWindow                    (PCCardWindowID         windowToRelease);
  107.  
  108. EXTERN_API_C( OSStatus )
  109. CSModifyWindow                    (PCCardWindowID         windowToModify,
  110.                                  PCCardWindowType         windowAttributes,
  111.                                  PCCardAccessSpeed         memorySpeed,
  112.                                  PCCardWindowOffset *    windowOffset);
  113.  
  114. EXTERN_API_C( OSStatus )
  115. CSGetWindowBaseAddress            (PCCardWindowID         window,
  116.                                  LogicalAddress *        baseAddress);
  117.  
  118. EXTERN_API_C( OSStatus )
  119. CSInquireWindow                    (PCCardSocket             vSocket,
  120.                                  UInt32                 device,
  121.                                  PCCardWindowID         windowID,
  122.                                  PCCardWindowAttributes * windowAttributes,
  123.                                  PCCardAccessSpeed *    windowParam,
  124.                                  UInt32 *                windowBase,
  125.                                  PCCardWindowSize *        windowSize,
  126.                                  PCCardWindowOffset *    windowOffset);
  127.  
  128. /* Function prototypes for CIS calls*/
  129.  
  130. EXTERN_API_C( OSStatus )
  131. CSValidateCIS                    (PCCardSocket             vSocket,
  132.                                  UInt32                 device,
  133.                                  UInt32 *                cisChainCount);
  134.  
  135. EXTERN_API_C( OSStatus )
  136. CSGetDeviceCount                (PCCardSocket             vSocket,
  137.                                  UInt32 *                deviceCount);
  138.  
  139.  
  140. /* Function prototypes for Status calls*/
  141.  
  142. EXTERN_API_C( OSStatus )
  143. CSGetStatus                        (PCCardSocket             vSocket,
  144.                                  UInt32 *                currentState,
  145.                                  UInt32 *                changedState,
  146.                                  PCCardVoltage *        Vcc,
  147.                                  PCCardVoltage *        Vpp);
  148.  
  149.  
  150. /* Function prototypes for configuration calls*/
  151.  
  152. EXTERN_API_C( OSStatus )
  153. CSRequestConfiguration            (PCCardSocket             vSocket,
  154.                                  UInt32                 device,
  155.                                  PCCardConfigOptions     configOptions,
  156.                                  PCCardInterfaceType     socketInterface,
  157.                                  PCCardCustomInterfaceID  customInterface,
  158.                                  PCCardVoltage             vcc,
  159.                                  PCCardVoltage             vpp,
  160.                                  PCCardIRQ                 IRQ,
  161.                                  PCCardDMA                 DMA,
  162.                                  UInt32                 configRegBaseAddress,
  163.                                  PCCardConfigPresentMask  configRegPresentMask,
  164.                                  PCCardFunctionConfigReg * configReg);
  165.  
  166. EXTERN_API_C( OSStatus )
  167. CSModifyConfiguration            (PCCardSocket             vSocket,
  168.                                  UInt32                 device,
  169.                                  PCCardConfigOptions     modifyAttributes,
  170.                                  PCCardIRQ                 IRQ,
  171.                                  PCCardDMA                 DMA,
  172.                                  PCCardVoltage             Vpp);
  173.  
  174. EXTERN_API_C( OSStatus )
  175. CSReleaseConfiguration            (PCCardSocket             vSocket,
  176.                                  UInt32                 device);
  177.  
  178. EXTERN_API_C( OSStatus )
  179. CSSetRingIndicate                (PCCardSocket             vSocket,
  180.                                  Boolean                 setRingIndicate);
  181.  
  182. EXTERN_API_C( OSStatus )
  183. CSResetFunction                    (PCCardSocket             vSocket,
  184.                                  UInt32                 device);
  185.  
  186. EXTERN_API_C( OSStatus )
  187. CSReadConfigurationRegister        (PCCardSocket             vSocket,
  188.                                  UInt32                 device,
  189.                                  PCCardConfigPresentMask  whichRegister,
  190.                                  UInt32                 configRegBaseAddress,
  191.                                  UInt8 *                registerValue);
  192.  
  193. EXTERN_API_C( OSStatus )
  194. CSWriteConfigurationRegister    (PCCardSocket             vSocket,
  195.                                  UInt32                 device,
  196.                                  PCCardConfigPresentMask  whichRegister,
  197.                                  UInt32                 configRegBaseAddress,
  198.                                  UInt8                     registerValue);
  199.  
  200. /* Function prototypes for Client Support calls*/
  201. EXTERN_API_C( OSStatus )
  202. CSRegisterClient                (PCCardSocket             vSocket,
  203.                                  PCCardEventMask         eventMask,
  204.                                  PCCardEventHandler     clientCallBack,
  205.                                  void *                    clientParam,
  206.                                  PCCardClientID *        newClientID);
  207.  
  208. EXTERN_API_C( OSStatus )
  209. CSDeRegisterClient                (PCCardClientID         theClientID);
  210.  
  211. EXTERN_API_C( OSStatus )
  212. CSSetEventMask                    (PCCardClientID         theClientID,
  213.                                  PCCardEventMask         newEventMask);
  214.  
  215. EXTERN_API_C( OSStatus )
  216. CSGetEventMask                    (PCCardClientID         theClientID,
  217.                                  PCCardEventMask *        newEventMask);
  218.  
  219. EXTERN_API_C( OSStatus )
  220. CSRegisterTimer                    (PCCardClientID         registeredClientID,
  221.                                  PCCardTimerID *        lpNewTimerID,
  222.                                  long                     delay);
  223.  
  224. EXTERN_API_C( OSStatus )
  225. CSDeRegisterTimer                (PCCardTimerID             timerID);
  226.  
  227. /* Function prototypes for CardBus Config Space access*/
  228. EXTERN_API_C( OSStatus )
  229. CSReadCardBusConfigSpace        (PCCardSocket             vSocket,
  230.                                  UInt32                 device,
  231.                                  UInt32                 configOffset,
  232.                                  Byte *                    data,
  233.                                  UInt32                 dataSize);
  234.  
  235. EXTERN_API_C( OSStatus )
  236. CSWriteCardBusConfigSpace        (PCCardSocket             vSocket,
  237.                                  UInt32                 device,
  238.                                  UInt32                 configOffset,
  239.                                  Byte *                    data,
  240.                                  UInt32                 dataSize);
  241.  
  242. /*------------------------------------------------------------------------------------
  243.     Card Enabler Types
  244. ------------------------------------------------------------------------------------*/
  245.  
  246. enum {
  247.     kUnknownDeviceType            = FOUR_CHAR_CODE('unkn'),        /* class-code = 0x00 */
  248.     kSCSIDeviceType                = FOUR_CHAR_CODE('scsi'),        /* class-code = 0x01, sub-class = 0x00 */
  249.     kBlockDeviceType            = FOUR_CHAR_CODE('blok'),        /* class-code = 0x01, sub-class = 0xXX */
  250.     kNetworkDeviceType            = FOUR_CHAR_CODE('netw'),        /* class-code = 0x02 */
  251.     kDisplayDeviceType            = FOUR_CHAR_CODE('dspl'),        /* class-code = 0x03 */
  252.     kMultimediaDeviceType        = FOUR_CHAR_CODE('mmdv'),        /* class-code = 0x04 */
  253.     kMemoryDeviceType            = FOUR_CHAR_CODE('mem '),        /* class-code = 0x05 */
  254.     kBridgeDeviceType            = FOUR_CHAR_CODE('brdg'),        /* class-code = 0x06 */
  255.     kCommDeviceType                = FOUR_CHAR_CODE('comm'),        /* class-code = 0x07 */
  256.     kPeripheralDeviceType        = FOUR_CHAR_CODE('sysp'),        /* class-code = 0x08 */
  257.     kInputDeviceType            = FOUR_CHAR_CODE('inpt'),        /* class-code = 0x09 */
  258.     kDockingDeviceType            = FOUR_CHAR_CODE('dock'),        /* class-code = 0x0A */
  259.     kProcessorDeviceType        = FOUR_CHAR_CODE('proc'),        /* class-code = 0x0B */
  260.     kFirewireBusDeviceType        = FOUR_CHAR_CODE('firw'),        /* class-code = 0x0C, sub-class = 0x00 */
  261.     kACCESSBusDeviceType        = FOUR_CHAR_CODE('accs'),        /* class-code = 0x0C, sub-class = 0x01 */
  262.     kSSABusDeviceType            = FOUR_CHAR_CODE('ssa '),        /* class-code = 0x0C, sub-class = 0x02 */
  263.     kUSBBusDeviceType            = FOUR_CHAR_CODE('usb '),        /* class-code = 0x0C, sub-class = 0x03 */
  264.     kFibreBusDeviceType            = FOUR_CHAR_CODE('fibr'),        /* class-code = 0x0C, sub-class = 0x04 */
  265.     kByteDeviceType                = FOUR_CHAR_CODE('byte'),        /* class-code = 0x?? */
  266.     kSerialDeviceType            = FOUR_CHAR_CODE('ser '),        /* class-code = 0x?? */
  267.     kParallelDeviceType            = FOUR_CHAR_CODE('parl'),        /* class-code = 0x?? */
  268.     kAIMSDeviceType                = FOUR_CHAR_CODE('aims')        /* class-code = 0x?? */
  269. };
  270.  
  271. typedef OSType                             PCDeviceType;
  272.  
  273. enum {
  274.     kAttributeType                = 0,
  275.     kMemoryType                    = 1,
  276.     kIOType                        = 2
  277. };
  278.  
  279. typedef UInt32                             PCCardMemoryType;
  280.  
  281. enum {
  282.     kUnknown                    = FOUR_CHAR_CODE('unkn'),
  283.     kPCCard16                    = FOUR_CHAR_CODE('pc16'),
  284.     kCardBus                    = FOUR_CHAR_CODE('cdbs')
  285. };
  286.  
  287. typedef OSType                             PCCardArchitectureType;
  288. #define kNodeNameName                            "name"
  289. #define k16BitPCCardName                        "16bitcard"
  290. #define kCardbusPropertyName                    "cardbus"
  291. #define kNodeCompatiblePropertyName            "compatible"
  292. #define kDevice_TypeName                        "device_type"
  293. #define kDriverISTPropertyName                    "driver-ist"
  294. #define kFCRAccessPropertyName                    "FCRAccess"
  295. #define kConfigRegPropertyName                    "ConfigRegValues"
  296. #define kNodeTypePropertyName                    "PCCardNodeType"
  297. #define kDeviceNumberPropertName                "DeviceNumber"
  298. #define kSocketNumberPropertName                "SocketNumber"
  299.  
  300. /*------------------------------------------------------------------------------------
  301.   Plugin Dispatch Table
  302. ------------------------------------------------------------------------------------*/
  303.  
  304. enum {
  305.     kServiceTypePCCardEnabler    = FOUR_CHAR_CODE('card'),
  306.     kPCCardEnablerPluginVersion    = 0x00000001,
  307.     kPCCardEnablerPluginCurrentVersion = kPCCardEnablerPluginVersion
  308. };
  309.  
  310. /*    Card Enabler Entrypoints*/
  311. typedef CALLBACK_API_C( OSStatus , CEValidateHardwareProc )(const RegEntryID *cardRef);
  312. typedef CALLBACK_API_C( OSStatus , CEInitializeProc )(const RegEntryID *cardRef, Boolean replacingOld);
  313. typedef CALLBACK_API_C( OSStatus , CECleanupProc )(const RegEntryID *cardRef, Boolean beingReplaced);
  314. typedef CALLBACK_API_C( OSStatus , CEPowerManagementProc )(const RegEntryID *lpCardEntry, PCCardPowerOptions powerLevel);
  315. typedef CALLBACK_API_C( OSStatus , CEHandleEventProc )(const RegEntryID *cardRef, PCCardEvent theEvent);
  316. typedef CALLBACK_API_C( OSStatus , CEGetCardInfoProc )(const RegEntryID *cardRef, PCCardDevType *cardType, PCCardSubType *cardSubType, StringPtr cardName, StringPtr vendorName);
  317. typedef CALLBACK_API_C( OSStatus , CEAddCardPropertiesProc )(const RegEntryID *cardRef);
  318. typedef CALLBACK_API_C( OSStatus , CEGetDeviceCountProc )(const RegEntryID *cardRef, ItemCount *numberOfDevices);
  319. typedef CALLBACK_API_C( OSStatus , CEGetDeviceNameProc )(UInt32 socketNumber, UInt32 deviceNumber, char *deviceName);
  320. typedef CALLBACK_API_C( OSStatus , CEGetDeviceCompatibleProc )(const RegEntryID *deviceRef, UInt32 socketNumber, UInt32 deviceNumber, char *name);
  321. typedef CALLBACK_API_C( OSStatus , CEGetDeviceTypeProc )(const RegEntryID *deviceRef, UInt32 socketNumber, UInt32 deviceNumber, PCDeviceType *lpDeviceType);
  322. typedef CALLBACK_API_C( OSStatus , CEGetDeviceTypeNameProc )(const RegEntryID *deviceRef, UInt32 socketNumber, UInt32 deviceNumber, char *name);
  323. typedef CALLBACK_API_C( OSStatus , CEAddDevicePropertiesProc )(const RegEntryID *deviceRef, UInt32 device);
  324. typedef CALLBACK_API_C( OSStatus , CEConfigureDeviceProc )(const RegEntryID *deviceRef, UInt32 deviceNumber);
  325. typedef CALLBACK_API_C( OSStatus , CEFinalizeDeviceProc )(UInt32 socket, UInt32 device, const RegEntryID *deviceRef);
  326. typedef CALLBACK_API_C( OSStatus , CEValidateCISProc )(UInt32 socket, UInt32 device, UInt32 *lpCISChainCount);
  327. typedef CALLBACK_API_C( OSStatus , CEGetFirstTupleProc )(UInt32 socket, UInt32 device, PCCardTupleIterator lpTupleIterator, Byte desiredTuple, void *lptupleData, UInt32 *lpTupleBufferSize, Byte *lpFoundTuple);
  328. typedef CALLBACK_API_C( OSStatus , CEGetNextTupleProc )(PCCardTupleIterator lpTupleIterator, Byte desiredTuple, void *lptupleData, UInt32 *lpTupleBufferSize, Byte *lpFoundTuple);
  329.  
  330. struct PCCardEnablerPluginHeader {
  331.     UInt32                             pluginDispatchTableVersion;
  332.     UInt32                             reserved1;
  333.     UInt32                             reserved2;
  334.     UInt32                             reserved3;
  335. };
  336. typedef struct PCCardEnablerPluginHeader PCCardEnablerPluginHeader;
  337.  
  338. struct PCCardEnablerPluginDispatchTable {
  339.     PCCardEnablerPluginHeader         header;
  340.  
  341.                                                                 /* General functions*/
  342.     CEValidateHardwareProc             validateHardwareProc;
  343.     CEInitializeProc                 initializeProc;
  344.     CECleanupProc                     cleanUpProc;
  345.     CEPowerManagementProc             setPCCardPowerLevel;
  346.  
  347.                                                                 /* Card functions*/
  348.     CEHandleEventProc                 handleEventProc;
  349.     CEGetCardInfoProc                 getCardInfoProc;
  350.     CEAddCardPropertiesProc         addCardProperties;
  351.     CEGetDeviceCountProc             getDeviceCount;
  352.  
  353.                                                                 /* Device functions*/
  354.     CEGetDeviceNameProc             getDeviceName;
  355.     CEGetDeviceCompatibleProc         getDeviceCompatibleNames;
  356.     CEGetDeviceTypeProc             getDeviceType;
  357.     CEGetDeviceTypeNameProc         getDeviceTypeName;
  358.     CEAddDevicePropertiesProc         addDeviceProperties;
  359.     CEConfigureDeviceProc             configureDevice;
  360.     CEFinalizeDeviceProc             finalizeDevice;
  361.  
  362.                                                                 /* Card Services Overrides...*/
  363.     CEValidateCISProc                 validateCIS;
  364.     CEGetFirstTupleProc             getFirstTuple;
  365.     CEGetNextTupleProc                 getNextTuple;
  366.  
  367.                                                                 /* InterruptHandlers...*/
  368.     InterruptHandler                 cardInterruptHandlerFunction;
  369.     InterruptEnabler                 cardInterruptEnableFunction;
  370.     InterruptDisabler                 cardInterruptDisableFunction;
  371. };
  372. typedef struct PCCardEnablerPluginDispatchTable PCCardEnablerPluginDispatchTable;
  373. typedef PCCardEnablerPluginDispatchTable * PCCardEnablerPluginDispatchTablePtr;
  374. /*------------------------------------------------------------------------------------
  375.     PC Card Enabler Utility calls exported by the Family
  376. ------------------------------------------------------------------------------------*/
  377. /*    Generic Enabler Entrypoints*/
  378. EXTERN_API_C( OSStatus )
  379. CEInitializeCard                (const RegEntryID *        cardRef,
  380.                                  Boolean                 replacingOld);
  381.  
  382. EXTERN_API_C( OSStatus )
  383. CEFinalizeCard                    (const RegEntryID *        cardRef,
  384.                                  Boolean                 beingReplaced);
  385.  
  386. EXTERN_API_C( OSStatus )
  387. CEPowerManagement                (const RegEntryID *        lpParentID,
  388.                                  PCCardPowerOptions     powerLevel);
  389.  
  390. EXTERN_API_C( OSStatus )
  391. CEHandleCardEvent                (const RegEntryID *        cardRef,
  392.                                  PCCardEvent             lTheCardEvent);
  393.  
  394. EXTERN_API_C( OSStatus )
  395. CEGetCardInfo                    (const RegEntryID *        cardRef,
  396.                                  PCCardDevType *        cardType,
  397.                                  PCCardSubType *        cardSubType,
  398.                                  StringPtr                 cardName,
  399.                                  StringPtr                 vendorName);
  400.  
  401. EXTERN_API_C( OSStatus )
  402. CEAddCardProperties                (const RegEntryID *        cardRef);
  403.  
  404. EXTERN_API_C( OSStatus )
  405. CEGetDeviceCount                (const RegEntryID *        cardRef,
  406.                                  ItemCount *            numberOfDevices);
  407.  
  408. /* device functions*/
  409. EXTERN_API_C( OSStatus )
  410. CEGetDeviceName                    (UInt32                 socketNumber,
  411.                                  UInt32                 deviceNumber,
  412.                                  char *                    deviceName);
  413.  
  414. EXTERN_API_C( OSStatus )
  415. CEGetDeviceCompatibleNames        (const RegEntryID *        deviceRef,
  416.                                  UInt32                 socketNumber,
  417.                                  UInt32                 deviceNumber,
  418.                                  char *                    name);
  419.  
  420. EXTERN_API_C( OSStatus )
  421. CEGetDeviceType                    (const RegEntryID *        deviceRef,
  422.                                  UInt32                 socketNumber,
  423.                                  UInt32                 deviceNumber,
  424.                                  PCDeviceType *            lpDeviceType);
  425.  
  426. EXTERN_API_C( OSStatus )
  427. CEGetDeviceTypeName                (const RegEntryID *        deviceRef,
  428.                                  UInt32                 socketNumber,
  429.                                  UInt32                 deviceNumber,
  430.                                  char *                    name);
  431.  
  432. EXTERN_API_C( OSStatus )
  433. CEAddDeviceProperties            (const RegEntryID *        deviceRef,
  434.                                  UInt32                 deviceNumber);
  435.  
  436. EXTERN_API_C( OSStatus )
  437. CEConfigureDevice                (const RegEntryID *        deviceRef,
  438.                                  UInt32                 deviceNumber);
  439.  
  440. EXTERN_API_C( OSStatus )
  441. CEFinalizeDevice                (UInt32                 socket,
  442.                                  UInt32                 device,
  443.                                  const RegEntryID *        deviceRef);
  444.  
  445.  
  446. /*    RegEntryID <-> socket number mapping functions*/
  447. EXTERN_API_C( OSStatus )
  448. CEGetSocketAndDeviceFromRegEntry (const RegEntryID *    lpNode,
  449.                                  UInt32 *                lpSocket,
  450.                                  UInt32 *                lpDevice);
  451.  
  452. EXTERN_API_C( OSStatus )
  453. CEGetPhysicalSocketNumber        (const RegEntryID *        socketRef,
  454.                                  const RegEntryID *        lpDeviceEntry,
  455.                                  UInt32 *                lpPhysicalSocketNumber);
  456.  
  457. /*    Hardware Validation Utilities*/
  458. EXTERN_API_C( OSStatus )
  459. CECompareCISTPL_VERS_1            (const RegEntryID *        cardRef,
  460.                                  Byte                     majorVersion,
  461.                                  Byte                     minorVersion,
  462.                                  const char *            manufacturer,
  463.                                  const char *            productName,
  464.                                  const char *            info1,
  465.                                  const char *            info2,
  466.                                  Boolean *                identical);
  467.  
  468. EXTERN_API_C( OSStatus )
  469. CECompareCISTPL_MANFID            (const RegEntryID *        cardRef,
  470.                                  UInt16                 manufacturerCode,
  471.                                  UInt16                 manufacturerInfo,
  472.                                  Boolean *                identical);
  473.  
  474. EXTERN_API_C( OSStatus )
  475. CECompareMemory                    (const RegEntryID *        cardRef,
  476.                                  PCCardMemoryType         memType,
  477.                                  ByteCount                 offset,
  478.                                  ByteCount                 length,
  479.                                  Byte *                    dataToCompare,
  480.                                  Boolean *                identical);
  481.  
  482. EXTERN_API_C( OSStatus )
  483. CEValidateCIS                    (UInt32                 socket,
  484.                                  UInt32                 device,
  485.                                  UInt32 *                lpCISChainCount);
  486.  
  487. EXTERN_API_C( InterruptMemberNumber )
  488. CEDefaultInterruptHandler        (InterruptSetMember     ISTmember,
  489.                                  void *                    refCon,
  490.                                  UInt32                 theIntCount);
  491.  
  492.  
  493. /*------------------------------------------------------------------------------------
  494.     PC Card Customization Resources
  495. ------------------------------------------------------------------------------------*/
  496.  
  497. enum {
  498.     kPCCardCustomInfoResType    = FOUR_CHAR_CODE('pccd'),
  499.     kPCCardCustomInfoVersion    = 0
  500. };
  501.  
  502.  
  503. struct PCCardCustomResource {
  504.     long                             version;
  505.     short                             customIconID;                /*    ICN#, etc. resource ID*/
  506.     short                             customStringsID;            /*    STR# resource ID*/
  507.     short                             customTypeStringIndex;
  508.     short                             customHelpStringIndex;
  509.     OSType                             customAction;
  510.     long                             customActionParam1;
  511.     long                             customActionParam2;
  512. };
  513. typedef struct PCCardCustomResource        PCCardCustomResource;
  514. #endif  /* !defined(__CARDSERVICES__) */
  515.  
  516.  
  517. #if PRAGMA_STRUCT_ALIGN
  518.     #pragma options align=reset
  519. #elif PRAGMA_STRUCT_PACKPUSH
  520.     #pragma pack(pop)
  521. #elif PRAGMA_STRUCT_PACK
  522.     #pragma pack()
  523. #endif
  524.  
  525. #ifdef PRAGMA_IMPORT_OFF
  526. #pragma import off
  527. #elif PRAGMA_IMPORT
  528. #pragma import reset
  529. #endif
  530.  
  531. #ifdef __cplusplus
  532. }
  533. #endif
  534.  
  535. #endif /* __PCCARDENABLERPLUGIN__ */
  536.  
  537.